I don't have much to say about this topic since I don't fully understand it.
Basically here are the types of equality I've found:
- Axiomatic
- Defined
- Identity
open Wikimedia | |
let string_candidates : coq_Node -> string = function | |
| TC (* Ting Chen (Wing) *) -> "Ting Chen (Wing)" | |
| SK (* Samuel Klein (Sj) *) -> "Samuel Klein (Sj)" | |
| KW (* Kat Walsh (mindspillage) *) -> "Kat Walsh (mindspillage)" | |
| MR (* Milos Rancic (Millosh) *) -> "Milos Rancic (Millosh)" | |
| LG (* Lodewijk Gelauff (Effeietsanders) *) -> "Lodewijk Gelauff (Effeietsanders)" | |
| CB (* Claudi Balaguer (Capsot) *) -> "Claudi Balaguer (Capsot)" |
open Mat | |
open Nat | |
open Path | |
type coq_Node = | |
| TC | |
| SK | |
| KW | |
| MR | |
| LG |
open Definitions | |
open List | |
open Path | |
(** val get_row : ('a1, 'a2) coq_Matrix -> 'a1 -> 'a1 -> 'a2 **) | |
let get_row m = | |
m | |
(** val get_col : ('a1, 'a2) coq_Matrix -> 'a1 -> 'a1 -> 'a2 **) |
function encode (plain : nat, key : nat) : (out : nat) | |
requires 0 <= plain < 26 | |
requires 0 <= key < 26 | |
ensures 0 <= out < 26 | |
ensures (plain + key >= 26) ==> out == plain + key - 26 | |
ensures plain + key < 26 ==> out == plain + key | |
{ | |
if plain + key >= 26 then | |
plain + key - 26 | |
else |
From Coq Require Import | |
Program.Tactics | |
List Psatz. | |
Definition nth_safe {A : Type} | |
(l : list A) (n : nat) (Ha : (n < length l)) : A. | |
Proof. | |
refine | |
(match (nth_error l n) as nth return (nth_error l n) = nth -> A with |
Require Import Lia | |
Coq.Bool.Bool | |
Coq.Init.Byte | |
Coq.NArith.NArith | |
Coq.Strings.Byte | |
Coq.ZArith.ZArith | |
Coq.Lists.List. | |
Open Scope N_scope. |
From Coq Require Import | |
Program.Tactics | |
List Psatz. | |
Program Definition nth_safe {A} (l: list A) (n: nat) (IN: (n < length l)%nat) : A := | |
match (nth_error l n) with | |
| Some res => res | |
| None => _ | |
end. |
(base) mukesh.tiwari@Mukeshs-MacBook-Pro-2 ~ % opam upgrade | |
The following actions will be performed: | |
=== recompile 9 packages | |
↻ coq-elpi 2.2.3 [uses elpi, ppx_optcomp] | |
↻ lsp 1.18.0 [uses ppx_yojson_conv_lib] | |
↻ ocaml-lsp-server 1.18.0~5.2preview [uses base, ppx_yojson_conv_lib] | |
↻ ocamlformat 0.26.2 [uses ocamlformat-lib] | |
↻ ocamlformat-lib 0.26.2 [uses base, stdio] | |
↻ ppx_deriving 6.0.2 [uses ppxlib] | |
↻ ppx_import 1.11.0 [uses ppxlib] |
CoInductive coAcc {A : Type} (R : A -> A -> Prop) (x : A) : Prop := | |
| coAcc_intro : (forall y : A, R x y -> coAcc R y) -> coAcc R x. | |
CoFixpoint coacc_rect : | |
forall (A : Type) (R : A -> A -> Prop) (P : A -> Type), | |
(forall x : A, (forall y : A, R x y -> coAcc R y) -> | |
(forall y : A, R x y -> P y) -> P x) -> forall x : A, coAcc R x -> P x := | |
fun (A : Type) (R : A -> A -> Prop) (P : A -> Type) | |
(f : (forall x : A, (forall y : A, R x y -> coAcc R y) -> |