X-Git-Url: http://git.megacz.com/?p=coq-hetmet.git;a=blobdiff_plain;f=src%2FHaskSkolemizer.v;h=0d1cecbf1ffc86359a2f39c02bc999d0edaa241b;hp=87641020c430e2439de4efa1d3e26f11a20c4d42;hb=refs%2Fheads%2Fcoq-extraction-baked-in;hpb=3282a2b78028238987a5a49e59d8e8d495aea0e1 diff --git a/src/HaskSkolemizer.v b/src/HaskSkolemizer.v index 8764102..0d1cecb 100644 --- a/src/HaskSkolemizer.v +++ b/src/HaskSkolemizer.v @@ -226,7 +226,7 @@ Section HaskSkolemizer. | RGlobal Γ Δ σ l wev => let case_RGlobal := tt in _ | RLam Γ Δ Σ tx te lev => let case_RLam := tt in _ | RCast Γ Δ Σ σ τ lev γ => let case_RCast := tt in _ - | RAbsT Γ Δ Σ κ σ lev => let case_RAbsT := tt in _ + | RAbsT Γ Δ Σ κ σ lev n => let case_RAbsT := tt in _ | RAppT Γ Δ Σ κ σ τ lev => let case_RAppT := tt in _ | RAppCo Γ Δ Σ κ σ₁ σ₂ γ σ lev => let case_RAppCo := tt in _ | RAbsCo Γ Δ Σ κ σ σ₁ σ₂ lev => let case_RAbsCo := tt in _ @@ -472,7 +472,10 @@ Section HaskSkolemizer. destruct case_RAbsT. simpl. - destruct lev; simpl; [ apply nd_rule; apply SFlat; apply (@RAbsT _ _ _ _ _ nil) | idtac ]. + destruct lev; simpl. + apply nd_rule. + apply SFlat. + apply (@RAbsT Γ Δ Σ κ σ nil n). apply (Prelude_error "RAbsT at depth>0"). destruct case_RAppCo. @@ -518,8 +521,17 @@ Section HaskSkolemizer. eapply RLetRec. destruct case_RCase. - simpl. - apply (Prelude_error "CASE: BIG FIXME"). + destruct lev; [ idtac | apply (Prelude_error "case at depth >0") ]; simpl. + apply nd_rule. + apply SFlat. + rewrite <- mapOptionTree_compose. + assert + ((mapOptionTree (fun x => skolemize_judgment (@pcb_judg tc Γ Δ nil tbranches avars (fst x) (snd x))) alts) = + (mapOptionTree (fun x => (@pcb_judg tc Γ Δ nil tbranches avars (fst x) (snd x))) alts)). + admit. + rewrite H. + set (@RCase Γ Δ nil tc Σ avars tbranches alts) as q. + apply q. Defined. Transparent take_arg_types_as_tree.