{-# OPTIONS --cubical #-}
module SemanticExplanation.SpartanDirect where
open import Agda.Builtin.Equality using (_≡_ ; refl)
open import Agda.Builtin.List using ([] ; _∷_)
open import SemanticExplanation
import Spartan6.Prelude as Spartan
import Spartan6.Examples.StateDomains as Domains
import Cubical.Foundations.Prelude as Cubical
spartanDirectDomain : DomainSpec
spartanDirectDomain =
domain-spec
"ff-spartan6-direct-v1"
(entity-rule "spartan.entity.clock-domain" (quote Domains.ClockDomain) []
"clock domain" ∷ [])
( predicate-rule "core.path-equality" (quote Cubical._≡_)
( infrastructureArgument ∷ infrastructureArgument
∷ semanticExpression ∷ semanticExpression ∷ [] )
(equalityPhrase "is equal to")
∷ [] )
( expression-rule "spartan.expression.same-clock-domain"
(quote Domains.sameClockDomain)
(semanticExpression ∷ semanticExpression ∷ [])
(binaryForm "the clock-domain comparison of " " and " "")
∷ expression-rule "spartan.constant.high" (quote Spartan.high) []
(constantWord "high")
∷ [] )
[] [] 256
sameClockDomainSoundDirect : Explanation
sameClockDomainSoundDirect =
explainName spartanDirectDomain Domains.sameClockDomain-sound
sameClockDomainSoundDirectText
: Explanation.text sameClockDomainSoundDirect
≡ "For every clock domain source, for every clock domain target, if the clock-domain comparison of source and target is equal to high, then source is equal to target."
sameClockDomainSoundDirectText = refl
sameClockDomainSoundCompact : Explanation
sameClockDomainSoundCompact =
explainNameCompact spartanDirectDomain Domains.sameClockDomain-sound
sameClockDomainSoundCompactText
: Explanation.text sameClockDomainSoundCompact
≡ "For every clock domain source and every clock domain target, if the clock-domain comparison of source and target is equal to high, then source is equal to target."
sameClockDomainSoundCompactText = refl