File tree 3 files changed +14
-10
lines changed
3 files changed +14
-10
lines changed Original file line number Diff line number Diff line change @@ -10,7 +10,9 @@ module Reflection.AST.DeBruijn where
10
10
11
11
open import Data.Bool.Base using (Bool; true; false; _∨_; if_then_else_)
12
12
open import Data.Nat.Base as Nat using (ℕ; zero; suc; _+_; _∸_; _<ᵇ_; _≡ᵇ_)
13
- open import Data.List.Base using (List; []; _∷_; _++_)
13
+ open import Data.List.Base using (List; []; _∷_; _++_; foldr; reverse; map)
14
+ open import Data.Product using (_×_; _,_)
15
+ open import Data.String as String using (String)
14
16
open import Data.Maybe.Base using (Maybe; nothing; just)
15
17
import Data.Maybe.Effectful as Maybe
16
18
import Function.Identity.Effectful as Identity
@@ -53,6 +55,16 @@ module _ where
53
55
weakenClauses : (by : ℕ) → Clauses → Clauses
54
56
weakenClauses = weakenFrom′ traverseClauses 0
55
57
58
+ -- Apply Weakening to substitute under lambdas
59
+
60
+ prependLams : List (String × Visibility) → Term → Term
61
+ prependLams xs t = foldr (λ {(s , v) t → lam v (abs s t)}) t (reverse xs)
62
+
63
+ prependHLams : List String → Term → Term
64
+ prependHLams vs = prependLams (map (_, hidden) vs)
65
+
66
+ prependVLams : List String → Term → Term
67
+ prependVLams vs = prependLams (map (_, visible) vs)
56
68
57
69
------------------------------------------------------------------------
58
70
-- η-expansion
Original file line number Diff line number Diff line change @@ -96,15 +96,6 @@ stripPis : Term → List (String × Arg Type) × Term
96
96
stripPis (Π[ s ∶ t ] x) = map₁ ((s , t) ∷_) (stripPis x)
97
97
stripPis x = [] , x
98
98
99
- prependLams : List (String × Visibility) → Term → Term
100
- prependLams xs t = foldr (λ {(s , v) t → lam v (abs s t)}) t (reverse xs)
101
-
102
- prependHLams : List String → Term → Term
103
- prependHLams vs = prependLams (List.map (_, hidden) vs)
104
-
105
- prependVLams : List String → Term → Term
106
- prependVLams vs = prependLams (List.map (_, visible) vs)
107
-
108
99
------------------------------------------------------------------------
109
100
-- Decidable equality
110
101
Original file line number Diff line number Diff line change @@ -27,6 +27,7 @@ open import Reflection.AST.Argument
27
27
open import Reflection.AST.Term as Term
28
28
open import Reflection.AST.AlphaEquality
29
29
open import Reflection.AST.Name as Name
30
+ open import Reflection.AST.DeBruijn using (prependVLams; prependHLams)
30
31
open import Reflection.TCM.Syntax
31
32
open import Data.Nat.Reflection
32
33
open import Data.List.Reflection
You can’t perform that action at this time.
0 commit comments