Skip to content

Commit

Permalink
intermediate commit
Browse files Browse the repository at this point in the history
  • Loading branch information
HuStmpHrrr committed May 15, 2024
1 parent 0ed58c8 commit 381567c
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 31 deletions.
2 changes: 1 addition & 1 deletion theories/Core/Completeness/LogicalRelation.v
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
From Coq Require Import Relations.
From Mcltt Require Import Base.
From Mcltt Require Export Evaluation PER.
From Mcltt.Core Require Export Evaluation PER.
Import Domain_Notations.

Inductive rel_exp (R : relation domain) M p M' p' : Prop :=
Expand Down
3 changes: 2 additions & 1 deletion theories/Core/Semantic/PER/Definitions.v
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
From Coq Require Import Lia PeanoNat Relation_Definitions RelationClasses.
From Equations Require Import Equations.
From Mcltt Require Import Base Evaluation LibTactics Readback.
From Mcltt Require Import Base LibTactics.
From Mcltt.Core Require Import Evaluation Readback.
From Mcltt Require Export Domain.
Import Domain_Notations.

Expand Down
3 changes: 2 additions & 1 deletion theories/Core/Semantic/PER/Lemmas.v
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
From Coq Require Import Lia PeanoNat Relation_Definitions RelationClasses.
From Mcltt Require Import Axioms Base Evaluation LibTactics PER.Definitions Readback.
From Mcltt Require Import Axioms Base LibTactics.
From Mcltt.Core Require Import Evaluation PER.Definitions Readback.
Import Domain_Notations.

Lemma per_bot_sym : forall m n,
Expand Down
2 changes: 1 addition & 1 deletion theories/Core/Semantic/Readback/Definitions.v
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
From Mcltt Require Import Base Evaluation.
From Mcltt.Core Require Import Base Evaluation.
From Mcltt Require Export Domain.
Import Domain_Notations.

Expand Down
3 changes: 2 additions & 1 deletion theories/Core/Semantic/Readback/Lemmas.v
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
From Coq Require Import Lia PeanoNat Relations.
From Mcltt Require Import Base Evaluation LibTactics Readback.Definitions.
From Mcltt Require Import Base LibTactics.
From Mcltt.Core Require Import Evaluation Readback.Definitions.
Import Domain_Notations.

Section functional_read.
Expand Down
4 changes: 2 additions & 2 deletions theories/Core/Semantic/Realizability.v
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From Coq Require Import Lia PeanoNat Relation_Definitions.
From Equations Require Import Equations.
From Mcltt Require Import Base Evaluation LibTactics Readback.
From Mcltt Require Export PER.
From Mcltt Require Import Base LibTactics.
From Mcltt.Core Require Export PER Evaluation Readback.
Import Domain_Notations.

Lemma per_nat_then_per_top : forall {n m},
Expand Down
88 changes: 64 additions & 24 deletions theories/Extraction/Evaluation.v
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
From Mcltt Require Import Base.
From Mcltt Require Import Evaluation.Definitions.
From Mcltt Require Import Base LibTactics.
From Mcltt.Core Require Import Evaluation.
Import Domain_Notations.

Generalizable All Variables.
Expand All @@ -18,25 +18,65 @@ Inductive eval_exp_order : exp -> env -> Prop :=
`( eval_exp_order {{{ M }}} p ->
eval_exp_order {{{ succ M }}} p )
| eeo_natrec :
`( {{ eval_exp_order M p }} ->
{{ rec m ⟦return A | zero -> MZ | succ -> MS end⟧ p ↘ r }} ->
eval_exp_order {{{ rec M return A | zero -> MZ | succ -> MS end }}} p ).

| eval_exp_natrec :
`( {{ ⟦ M ⟧ p ↘ m }} ->
{{ rec m ⟦return A | zero -> MZ | succ -> MS end⟧ p ↘ r }} ->
{{ ⟦ rec M return A | zero -> MZ | succ -> MS end ⟧ p ↘ r }} )
| eval_exp_pi :
`( {{ ⟦ A ⟧ p ↘ a }} ->
{{ ⟦ Π A B ⟧ p ↘ Π a p B }} )
| eval_exp_fn :
`( {{ ⟦ λ A M ⟧ p ↘ λ p M }} )
| eval_exp_app :
`( {{ ⟦ M ⟧ p ↘ m }} ->
{{ ⟦ N ⟧ p ↘ n }} ->
{{ $| m & n |↘ r }} ->
{{ ⟦ M N ⟧ p ↘ r }} )
| eval_exp_sub :
`( {{ ⟦ σ ⟧s p ↘ p' }} ->
{{ ⟦ M ⟧ p' ↘ m }} ->
{{ ⟦ M[σ] ⟧ p ↘ m }} )
`( eval_exp_order M p ->
(forall m, {{ ⟦ M ⟧ p ↘ m }} -> eval_natrec_order A MZ MS m p) ->
eval_exp_order {{{ rec M return A | zero -> MZ | succ -> MS end }}} p )
| eeo_pi :
`( eval_exp_order A p ->
eval_exp_order {{{ Π A B }}} p )
| eeo_fn :
`( eval_exp_order {{{ λ A M }}} p )
| eeo_app :
`( eval_exp_order M p ->
eval_exp_order N p ->
(forall m n, {{ ⟦ M ⟧ p ↘ m }} -> {{ ⟦ N ⟧ p ↘ n }} -> eval_app_order m n) ->
eval_exp_order {{{ M N }}} p )
| eeo_sub :
`( eval_sub_order σ p ->
(forall p', {{ ⟦ σ ⟧s p ↘ p' }} -> eval_exp_order M p') ->
eval_exp_order {{{ M[σ] }}} p )

with eval_natrec_order : exp -> exp -> exp -> domain -> env -> Prop :=
| eno_zero :
`( eval_exp_order MZ p ->
eval_natrec_order A MZ MS zero p )
| eno_succ :
`( eval_natrec_order A MZ MS b p ->
(forall r, {{ rec b ⟦return A | zero -> MZ | succ -> MS end⟧ p ↘ r }} -> eval_exp_order {{{ MS }}} d{{{ p ↦ b ↦ r }}}) ->
eval_natrec_order A MZ MS d{{{ succ b }}} p )
| eno_neut :
`( eval_exp_order MZ p ->
eval_exp_order A d{{{ p ↦ ⇑ ℕ m }}} ->
eval_natrec_order A MZ MS d{{{ ⇑ ℕ m }}} p )

with eval_app_order : domain -> domain -> Prop :=
| eao_fn :
`( eval_exp_order M d{{{ p ↦ n }}} ->
eval_app_order d{{{ λ p M }}} n )
| eao_neut :
`( eval_exp_order B d{{{ p ↦ n }}} ->
eval_app_order d{{{ ⇑ (Π a p B) m }}} n )

with eval_sub_order : sub -> env -> Prop :=
| eso_id :
`( eval_sub_order {{{ Id }}} p )
| eso_weaken :
`( eval_sub_order {{{ Wk }}} p )
| eso_extend :
`( eval_sub_order σ p ->
eval_exp_order M p ->
eval_sub_order {{{ σ ,, M }}} p )
| eso_compose :
`( eval_sub_order τ p ->
(forall p', {{ ⟦ τ ⟧s p ↘ p' }} -> eval_sub_order σ p') ->
eval_sub_order {{{ σ ∘ τ }}} p ).

#[export]
Hint Constructors eval_exp_order eval_natrec_order eval_app_order eval_sub_order : mcltt.


Lemma eval_exp_order_sound : forall m p a,
{{ ⟦ m ⟧ p ↘ a }} ->
eval_exp_order m p.
Proof.
induction 1; econstructor; mauto.
1 change: 1 addition & 0 deletions theories/_CoqProject
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,5 @@
./Frontend/Elaborator.v
./Frontend/Parser.v
./Frontend/ParserExtraction.v
./Extraction/Evaluation.v
./LibTactics.v

0 comments on commit 381567c

Please sign in to comment.