Commit da34dca3 authored by Martin Clochard's avatar Martin Clochard

examples(wip): 2wp_gen

parent 2411344a
SHELL=/bin/bash
REPLAY=why3 replay -L .
MLW=base choice ho_set ho_rel fn order transfinite game
MLW=base choice ho_set ho_rel fn order transfinite game game_fmla
replay:
@exe() { echo "$$0 $$@"; "$$@"; };\
......
......@@ -2,13 +2,13 @@
<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
"http://why3.lri.fr/why3session.dtd">
<why3session shape_version="4">
<prover id="0" name="Alt-Ergo" version="1.00.prv" timelimit="5" steplimit="1" memlimit="1000"/>
<prover id="1" name="Alt-Ergo" version="1.01" timelimit="5" steplimit="1" memlimit="1000"/>
<file name="../base.mlw">
<theory name="Fun" sum="d41d8cd98f00b204e9800998ecf8427e">
</theory>
<theory name="FunExt" sum="74d4af5538daa9eb9ddee6284a05e5bf">
<goal name="WP_parameter extensional" expl="VC for extensional">
<proof prover="0"><result status="valid" time="0.00" steps="2"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="2"/></proof>
</goal>
</theory>
<theory name="FunCategory" sum="d41d8cd98f00b204e9800998ecf8427e">
......@@ -19,34 +19,34 @@
<goal name="ext.1" expl="1.">
<transf name="inline_goal">
<goal name="ext.1.1" expl="1.">
<proof prover="0"><result status="valid" time="0.00" steps="2"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="2"/></proof>
</goal>
</transf>
</goal>
<goal name="ext.2" expl="2.">
<proof prover="0"><result status="valid" time="0.00" steps="3"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="3"/></proof>
</goal>
</transf>
</goal>
<goal name="assoc">
<proof prover="0"><result status="valid" time="0.00" steps="4"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="4"/></proof>
</goal>
<goal name="neutral">
<proof prover="0"><result status="valid" time="0.00" steps="9"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="9"/></proof>
</goal>
<goal name="FunExt.extensionality">
<proof prover="0"><result status="valid" time="0.00" steps="2"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="2"/></proof>
</goal>
<goal name="FunCategory.assoc">
<proof prover="0"><result status="valid" time="0.00" steps="2"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="2"/></proof>
</goal>
<goal name="FunCategory.neutral">
<proof prover="0"><result status="valid" time="0.01" steps="10"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="10"/></proof>
</goal>
</theory>
<theory name="Set" sum="8dc39e2ae96fd0498b0d50bb47f235eb">
<goal name="sext_is_ext">
<proof prover="0"><result status="valid" time="0.00" steps="4"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="4"/></proof>
</goal>
</theory>
<theory name="Rel" sum="d41d8cd98f00b204e9800998ecf8427e">
......@@ -63,66 +63,66 @@
<goal name="extensionality">
<transf name="split_goal_wp">
<goal name="extensionality.1" expl="1.">
<proof prover="0"><result status="valid" time="0.01" steps="4"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="4"/></proof>
</goal>
<goal name="extensionality.2" expl="2.">
<proof prover="0"><result status="valid" time="0.01" steps="4"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="4"/></proof>
</goal>
<goal name="extensionality.3" expl="3.">
<proof prover="0"><result status="valid" time="0.00" steps="3"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="3"/></proof>
</goal>
</transf>
</goal>
<goal name="assoc">
<transf name="compute_specified">
<goal name="assoc.1" expl="1.">
<proof prover="0"><result status="valid" time="0.01" steps="12"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="12"/></proof>
</goal>
</transf>
</goal>
<goal name="reverse_antimorphism">
<proof prover="0"><result status="valid" time="0.01" steps="27"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="27"/></proof>
</goal>
<goal name="reverse_antimorphism_id">
<proof prover="0"><result status="valid" time="0.01" steps="9"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="9"/></proof>
</goal>
<goal name="reverse_involution">
<proof prover="0"><result status="valid" time="0.01" steps="5"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="5"/></proof>
</goal>
<goal name="neutral">
<transf name="compute_specified">
<goal name="neutral.1" expl="1.">
<proof prover="0"><result status="valid" time="0.00" steps="14"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="14"/></proof>
</goal>
</transf>
</goal>
<goal name="RelExt.extensionality">
<proof prover="0"><result status="valid" time="0.01" steps="2"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="2"/></proof>
</goal>
<goal name="RelCategory.assoc">
<proof prover="0"><result status="valid" time="0.01" steps="2"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="2"/></proof>
</goal>
<goal name="RelCategory.reverse_antimorphism">
<proof prover="0"><result status="valid" time="0.01" steps="2"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="2"/></proof>
</goal>
<goal name="RelCategory.reverse_antimorphism_id">
<proof prover="0"><result status="valid" time="0.00" steps="2"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="2"/></proof>
</goal>
<goal name="RelCategory.reverse_involution">
<proof prover="0"><result status="valid" time="0.01" steps="2"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="2"/></proof>
</goal>
<goal name="RelCategory.neutral">
<proof prover="0"><result status="valid" time="0.01" steps="11"/></proof>
<proof prover="1"><result status="valid" time="0.01" steps="11"/></proof>
</goal>
</theory>
<theory name="SubsetOrder" sum="d41d8cd98f00b204e9800998ecf8427e">
</theory>
<theory name="SetProofs" sum="0be5aa0fe01aa313571b5c5ef55cb77b">
<goal name="anti_subset">
<proof prover="0"><result status="valid" time="0.00" steps="7"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="7"/></proof>
</goal>
<goal name="SubsetOrder.subset_order">
<proof prover="0"><result status="valid" time="0.02" steps="65"/></proof>
<proof prover="1"><result status="valid" time="0.02" steps="65"/></proof>
</goal>
</theory>
<theory name="Image" sum="d41d8cd98f00b204e9800998ecf8427e">
......
......@@ -2,14 +2,14 @@
<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
"http://why3.lri.fr/why3session.dtd">
<why3session shape_version="4">
<prover id="0" name="Alt-Ergo" version="1.00.prv" timelimit="5" steplimit="1" memlimit="1000"/>
<prover id="1" name="Alt-Ergo" version="1.01" timelimit="5" steplimit="1" memlimit="1000"/>
<file name="../choice.mlw">
<theory name="Choice" sum="7c1ca533a0ae37f3bd6e59347ceef0bd">
<goal name="WP_parameter choose" expl="VC for choose">
<proof prover="0"><result status="valid" time="0.00" steps="3"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="3"/></proof>
</goal>
<goal name="WP_parameter choose_if" expl="VC for choose_if">
<proof prover="0"><result status="valid" time="0.00" steps="2"/></proof>
<proof prover="1"><result status="valid" time="0.00" steps="2"/></proof>
</goal>
</theory>
</file>
......
......@@ -7,5 +7,7 @@
</theory>
<theory name="Category" sum="d41d8cd98f00b204e9800998ecf8427e" expanded="true">
</theory>
<theory name="Image" sum="d41d8cd98f00b204e9800998ecf8427e" expanded="true">
</theory>
</file>
</why3session>
......@@ -1993,123 +1993,3 @@ module StratProofs
end
(*
lemma absurdity : forall sc:section 'a 'b,dmn.
section_hypothesis sc ->
let evl = evolve sc dmn in
let bs = basic sc in
let st = fixpoint_above sc.sd evl bs in
let angb = sim_angel sc in
let winb = rel_map sc.r sc.win in
(forall x. st.h_total x -> not winb x) /\
not win_at sc.g2 winb angb dmn st.h_total ->
false
by let o1 = sc.g1.progress in let o2 = sc.g2.progress in
let op = oprod o1 o2 in
let pr = sup op st.h_pair in
let (a,b) = pr in
let nst = evl st in
tr_reach sc.sd evl bs st
so coherent sc dmn st
so maximum sc.sd (tr_reach sc.sd evl bs) st
so if not maximum op st.h_pair pr
then nst.h_pair pr so chain op st.h_pair
so (exists y. supremum op st.h_pair y)
so supremum op st.h_pair pr
so upper_bound op st.h_pair pr so false
else let s0 = sc.anga a st.h_proj in
if st.i_dmn s0 <> None \/ not sc.g1.transition a s0
then (* This is the point where we use the fact that
'a-angel must win. *)
let dmna = \x. match st.i_dmn x with
| None -> default
| Some a -> a
end
in
compat st.i_dmn dmna
so reconstructed sc st dmna
so (forall x. st.h_proj x -> not (sc.win x
so exists y. st.h_pair (x,y) so sc.r x y
so rel_map_witness sc.r sc.win y x so winb y
so st.h_total y))
so (maximum o1 st.h_proj a by forall u. st.h_proj u ->
o1 u a by exists v. st.h_pair (u,v) so op (u,v) (a,b))
so supremum o1 st.h_proj a
so a = sup o1 st.h_proj
so (sc.g1.transition a s0 -> dmna s0 = a /\ s0 (dmna s0)
by match st.i_dmn s0 with
| None -> false
| Some u -> s0 u /\ u = a
end)
so let nxt = strat_next sc.g1 sc.anga dmna in
nxt st.h_proj = a
so pext (extends_ch o1 nxt st.h_proj) st.h_proj
so maximum (subchain o1)
(tr_reach (subchain o1) (extends_ch o1 nxt) ((=) sc.basea))
st.h_proj
so (not win_against sc.g1 sc.basea sc.win sc.anga dmna
by forall ch. reach_ch o1 nxt ((=) sc.basea) ch ->
win_at sc.g1 sc.win sc.anga dmna ch -> false
by exists x. maximum o1 ch x /\
(sc.win x \/ let a = sc.anga x ch in sc.g1.transition x a /\
not a (dmna a))
so not (sc.win x so subchain o1 ch st.h_proj so st.h_proj x)
so supremum o1 ch x
so x = sup o1 ch
so nxt ch = x
so ext (extends_ch o1 nxt ch) ch
so maximum (subchain o1)
(tr_reach (subchain o1) (extends_ch o1 nxt) ((=) sc.basea))
ch
so ch = st.h_proj
so false)
so not winning_strat sc.g1 sc.basea sc.win sc.anga
so false
else false by let target = rel_map sc.r s0 in
let bl = sup o2 st.h_local in
if target bl
then let al = choice (rel_map_witness sc.r s0 bl) in
nst.i_dmn s0 = Some al so false
else let iang = iangel sc b target in
let nxt = strat_next sc.g2 iang dmn in
nst.h_local = extends_ch o2 nxt st.h_local
so if win_at sc.g2 winb angb dmn st.h_total then true else
not (nst.h_local = st.h_local
so locally_winning sc dmn st
so reach_ch o2 nxt ((=) b) st.h_local
so maximum (subchain o2)
(tr_reach (subchain o2) (extends_ch o2 nxt) ((=) b))
st.h_local
so (not win_against sc.g2 b target iang dmn
by forall ch. reach_ch o2 nxt ((=) b) ch ->
win_at sc.g2 target iang dmn ch -> false
by exists x. maximum o2 ch x /\
(target x \/ let a = iang x ch in sc.g2.transition x a /\
not a (dmn a))
so (supremum o2 st.h_local bl
by exists y. supremum o2 st.h_local y)
so not (target x so subchain o2 ch st.h_local so st.h_local x
so maximum o2 st.h_local x
so supremum o2 st.h_local x
so x = bl)
so supremum o2 ch x
so x = sup o2 ch
so nxt ch = x
so ext (extends_ch o2 nxt ch) ch
so maximum (subchain o2)
(tr_reach (subchain o2) (extends_ch o2 nxt) ((=) b))
ch
so ch = st.h_local
so x = bl
so maximum o2 st.h_total bl
so maximal_witness sc st.h_total st dmn
so any_max_witness sc st.h_total st
so st = choice (any_max_witness sc st.h_total)
so iang bl ch = angb bl st.h_total)
so not winning_strat sc.g2 b target iang
so sc.r a b
so exists ang. winning_strat sc.g2 b target ang)
so false
end*)
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment