module linear.Relation.Functional where open import Data.Unit open import Function open import Relation.Binary.PropositionalEquality Functional : {RI : Set} -- Relevant Input {II : RI → Set} -- Irelevant Input {O : RI → Set} -- Output (R : (ri : RI) → II ri → O ri → Set) → Set Functional {RI} {II} {O} R = (ri : RI) {ii₁ ii₂ : II ri} {o₁ o₂ : O ri} → R ri ii₁ o₁ → R ri ii₂ o₂ → o₁ ≡ o₂ Functional′ : {I : Set} {O : I → Set} (R : (i : I) → O i → Set) → Set Functional′ R = Functional {II = const ⊤} (λ ri _ o → R ri o)