File: PrintingTests.v

package info (click to toggle)
coq-record-update 0.3.6-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 208 kB
  • sloc: makefile: 38; sed: 6
file content (37 lines) | stat: -rw-r--r-- 897 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
From RecordUpdate Require Import RecordUpdate.

Record X := mkX { A: nat; B: nat; }.
#[export] Instance etaX : Settable _ := settable! mkX <A; B>.

Definition setA (x:X) n := x <|B:=n|>.
Print setA.

Definition updateA (x:X) n := x <|B::=Nat.add n|>.
Print updateA.

Record Nested := mkNested { anX: X; aNat: nat; }.
#[export] Instance etaNested : Settable _ := settable! mkNested <anX; aNat>.

Definition setXB (n:Nested) := n <|anX; B:=3|>.
Print setXB.

Definition updateXB (n:Nested) := n <|anX; B::=S|>.
Print updateXB.

Lemma test_reduction :
  (mkNested (mkX 2 3) 7) <|aNat := 4|> =
  mkNested (mkX 2 3) 4.
Proof.
  (* this should reduce the LHS to the RHS *)
  simpl. Show.
  reflexivity.
Qed.

Lemma test_reduction2 :
  (mkNested (mkX 2 3) 7) <|anX := mkX 3 2|> <|aNat := 1|> =
  mkNested (mkX 3 2) 1.
Proof.
  (* this should reduce the LHS to the RHS *)
  cbn. Show.
  reflexivity.
Qed.