open import Agda.Builtin.Nat using (Nat; suc)
@0 erasedFun : Nat → Nat
erasedFun x = x
module @0 ErasedModule where postulate
_≡_ : Nat → Nat → Set
_≤_ : Nat → Nat → Set
open ErasedModule
erasedFunArg : (n : Nat) → @0 (n ≡ 0) → Nat
erasedFunArg n _ = suc n
erasedHigherOrderFunArg : @0 Nat → (@0 Nat → Nat) → Nat
erasedHigherOrderFunArg n f = suc (f n)
record @0 ErasedRec (x y : Nat) : Set where
field x≡y : x ≡ y
erasedRec : {@0 x y : Nat} → @0 ErasedRec x y → Nat
erasedRec _ = 42
record ErasedField : Set where
field x : Nat
@0 x≡0 : x ≡ 0
succ : ErasedField → Nat
succ (record {x = x}) = suc x
record ErasedRecParam (@0 x : Nat) : Set where
field y : Nat
@0 x≡y : x ≡ y
erasedRecParam : (@0 x : Nat) → ErasedRecParam x → Nat
erasedRecParam _ (record {y = y}) = y
erasedRecParamH : {@0 x : Nat} → ErasedRecParam x → Nat
erasedRecParamH (record {y = y}) = y
data @0 ErasedData : Set where
mk : (m n : Nat) → m ≡ n → ErasedData
erasedData : @0 ErasedData → Nat
erasedData (mk m n _) = 42
{-# FOREIGN AGDA2RUST #[derive(Debug)] #-}
data ErasedCon : Set where
mk : Nat → ErasedCon
@0 mkIrr : (m : Nat) → m ≡ 0 → ErasedCon
erasedClause : ErasedCon → Nat
erasedClause (mk n) = n
erasedClause (mkIrr n _) = n
{-# FOREIGN AGDA2RUST #[derive(Debug)] #-}
data ErasedConArg : Set where
mk : (n : Nat) → @0 (n ≡ 0) → ErasedConArg
erasedConArg : ErasedConArg → Nat
erasedConArg (mk n _) = n
{-# FOREIGN AGDA2RUST #[derive(Debug)] #-}
data BST (@0 lower upper : Nat) : Set where
Leaf : (@0 pf : lower ≤ upper) → BST lower upper
Node : (x : Nat) (l : BST lower x) (r : BST x upper) → BST lower upper
{-# FOREIGN AGDA2RUST
use self::BST::{Leaf,Node};
pub fn main() {
println!("{}:\t \
{} | {} | \
{} | {} | {} | {} | \
{} | {:?} | {:?} | {:?}", module_path!(),
erasedFunArg(41),
erasedHigherOrderFunArg(41),
erasedRec(),
succ(ErasedField {x: 41}),
erasedRecParam(ErasedRecParam {y: 42}),
erasedRecParamH(ErasedRecParam {y: 42}),
erasedData(),
erasedClause(ErasedCon::mk(42)),
erasedConArg(ErasedConArg::mk(42)),
Node(4, ᐁ(Node(2, ᐁ(Leaf()), ᐁ(Leaf()))), ᐁ(Leaf())),
);
}
#-}