annotate example1.agda @ 19:55a0d814fce7 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 16 Dec 2020 16:16:43 +0900
parents 6cd5b63ecc38
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 module example1 where
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 open import Data.List hiding (all ; and ; or )
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 open import Data.Maybe
15
2f4db56bb289 fix example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
4 open import Data.Bool hiding ( not ; _∧_ ; _∨_ )
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
10
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
6 data Const : Set where
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
7 a : Const
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
8 b : Const
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
9 c : Const
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
10
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
11 data Var : Set where
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
12 X : Var
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
13 Y : Var
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
14 Z : Var
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
10
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
16 data Func : Set where
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
17 f : Func
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
18 g : Func
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
19 h : Func
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
10
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
21 data Pred : Set where
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
22 p : Pred
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
23 q : Pred
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
24 r : Pred
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
10
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
26 open import Logic Const Func Var Pred
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
27
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
28 ex1 : Statement
15
2f4db56bb289 fix example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
29 ex1 = ¬ ( pred q ∧ ( All X => predx p ( func f (var X) ) ))
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
10
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
31 subst-expr : Expr → Var → Expr → Expr
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
32 subst-expr (var X) X v = v
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
33 subst-expr (var Y) Y v = v
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
34 subst-expr (var Z) Z v = v
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 subst-expr (func f₁ e) xv v = func f₁ ( subst-expr e xv v )
10
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
36 subst-expr (e , e1) xv v = ( subst-expr e xv v ) , ( subst-expr e1 xv v )
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
37 subst-expr x _ v = x
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
10
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
39 amap : (px : Pred ) → Bool
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
40 amap q = true
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 amap px = false
10
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
42 pmap : (px : Pred ) → Expr → Bool
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
43 pmap p (const c) = true
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
44 pmap p (func d (const a) , const b ) = true
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 pmap px _ = false
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 -- we only try simple constant, it may contains arbitrary complex functional value
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 all0 : List Expr
10
edf4a816abff starwars exmple
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
49 all0 = const a ∷ const b ∷ const c ∷ []
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
18
6cd5b63ecc38 replace syntax
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
51 test3 : Bool
6cd5b63ecc38 replace syntax
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
52 test3 = M amap pmap all0 subst-expr ( Exist X => predx p (var X) )
9
627a6bf54ed5 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
15
2f4db56bb289 fix example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
54 open import clausal Const Func Var Pred
2f4db56bb289 fix example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
55
18
6cd5b63ecc38 replace syntax
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
56 test4 : List Clause
6cd5b63ecc38 replace syntax
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
57 test4 = translate ( Exist X => predx p (var X) ) (c ∷ []) (h ∷ []) subst-expr
15
2f4db56bb289 fix example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
58