File tree Expand file tree Collapse file tree 2 files changed +82
-2
lines changed
Expand file tree Collapse file tree 2 files changed +82
-2
lines changed Original file line number Diff line number Diff line change @@ -100,6 +100,88 @@ def test():
100100 ),
101101)
102102
103+
104+ # TODO: cumsum_comm = cumsum(lambda x, cumsum(lammbda y, a[x,y]) ) ???
105+ @kd .Theorem (
106+ "forall (a : RSeq) (x : Real) (n : Int), (cumsum (smul x a)) n = (smul x (cumsum a)) n"
107+ )
108+ def cumsul_smul (l ):
109+ a , x , n = l .fixes ()
110+ l .induct (n )
111+
112+ # n < 0
113+ # TODO: These induction cases look disgusting with too many lambdas.
114+ l .fix ()
115+ l .simp ()
116+ l .intros ()
117+ l .unfold (cumsum , smul )
118+ l .simp ()
119+ l .auto (by = [smul .defn , cumsum .defn ])
120+
121+ # n == 0
122+ l .auto (by = [smul .defn , cumsum .defn ])
123+
124+ # n > 0
125+ l .fix ()
126+ l .simp ()
127+ l .unfold (cumsum , smul )
128+ l .simp ()
129+ l .unfold (cumsum , smul )
130+ l .simp ()
131+ l .auto (by = [smul .defn , cumsum .defn ])
132+
133+
134+ @kd .Theorem (
135+ "forall (a b : RSeq) (m : Int), (forall (n : Int), n >= 0 -> a n <= b n) -> m >= 0 -> (cumsum a) m <= (cumsum b) m"
136+ )
137+ def cumsul_mono (l ):
138+ a , b , m = l .fixes ()
139+ l .intros ()
140+ l .induct (m )
141+ _n = l .fix ()
142+ l .auto ()
143+
144+ # n == 0
145+ l .auto (by = [cumsum .defn ])
146+
147+ # n > 0
148+ _n = l .fix ()
149+ l .intros ()
150+ l .simp ()
151+ l .intros ()
152+ l .unfold (cumsum )
153+ l .auto (by = [cumsum .defn ])
154+
155+
156+ @kd .Theorem (
157+ "forall (a b : RSeq) (n : Int), (cumsum (a + b)) n = (cumsum a) n + (cumsum b) n"
158+ )
159+ def cumsul_add (l ):
160+ a , x , n = l .fixes ()
161+ l .induct (n )
162+
163+ # n < 0
164+ # TODO: These induction cases look disgusting with too many lambdas.
165+ l .fix ()
166+ l .simp ()
167+ l .intros ()
168+ l .unfold (cumsum , add )
169+ l .simp ()
170+ l .auto (by = [add .defn , cumsum .defn ])
171+
172+ # n == 0
173+ l .auto (by = [add .defn , cumsum .defn ])
174+
175+ # n > 0
176+ l .fix ()
177+ l .simp ()
178+ l .unfold (cumsum , add )
179+ l .simp ()
180+ l .unfold (cumsum , add )
181+ l .simp ()
182+ l .auto (by = [add .defn , cumsum .defn ])
183+
184+
103185max = smt .Function ("max" , RSeq , RSeq )
104186max = kd .define (
105187 "max" ,
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments