Transpilation support¶
This page is measured, not written
python -m tests.transpile.support_matrix calls
quivers.transpile.transpile once per (program, backend)
pair and writes this file from the outcomes. Every refusal
quoted below is the runtime's own message, copied verbatim
from the UnsupportedConstruct it raised. A drift test
regenerates the page and fails when the result differs from
what is committed.
transpile(module, target=...) has 11 registered backends. Given a program it either returns target source bytes or raises UnsupportedConstruct naming the constructs it cannot represent. This page records which of the two happens, for the 46 programs of the examples gallery and for 46 construct fixtures, each isolating a single QVR surface construct.
Support is thus stated as a refusal boundary rather than as a feature list. A construct no backend accepts is a limit of the export surface itself, and reaching any target means writing the model differently; a construct one backend alone refuses is a limit of that target, and another target may take the program unchanged. Sections 2 and 3 separate the two, since the remedies differ.
Refusals are grouped by construct, not by program: the heading of each group is the identifier prefix of the reported UnsupportedConstruct.kinds, which is what a reader asking whether a feature of their own model is supported wants to match on.
What this page does not cover is whether a rendered program's density agrees with QVR's own. That is the subject of the transpilation-correctness contract, which states the evidence available for the programs that do render, and of the transpilation architecture, which describes how a program reaches a target at all.
Coverage at a glance¶
| Backend | Gallery programs | Constructs |
|---|---|---|
| bugs | 25 / 46 | 38 / 46 |
| church | 23 / 46 | 41 / 46 |
| edward2 | 31 / 46 | 41 / 46 |
| gen | 29 / 46 | 40 / 46 |
| jags | 29 / 46 | 38 / 46 |
| numpyro | 32 / 46 | 43 / 46 |
| pymc | 31 / 46 | 41 / 46 |
| pyro | 32 / 46 | 43 / 46 |
| stan | 31 / 46 | 39 / 46 |
| turing | 31 / 46 | 41 / 46 |
| webppl | 32 / 46 | 41 / 46 |
Each backend links to its transpilation-correctness page, which documents the structure it emits, the parameter conversions it applies, and the evidence exercised for it.
1. Can this backend take my program?¶
yes means transpile returned bytes; no means it raised UnsupportedConstruct. Sections 2 and 3 give the reason behind every no.
1.1 Gallery programs¶
| Program | bugs | church | edward2 | gen | jags | numpyro | pymc | pyro | stan | turing | webppl |
|---|---|---|---|---|---|---|---|---|---|---|---|
ar1 |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
bayesian_regression |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
beta_binomial_ab_test |
no | no | yes | yes | yes | yes | yes | yes | yes | yes | yes |
beta_regression |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
bidirectional_rnn_lm |
no | no | no | no | no | no | no | no | no | no | no |
bnn |
no | no | no | no | no | no | no | no | no | no | no |
ccg |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
changepoint |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
continuous_hmm |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
custom_rules |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
deep_markov |
no | no | no | no | no | no | no | no | no | no | no |
factor_analysis |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
gamma_regression |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
gru_lm |
no | no | no | no | no | no | no | no | no | no | no |
half_student_t_hierarchical |
yes | no | yes | yes | yes | yes | yes | yes | yes | yes | yes |
hmm |
no | no | no | no | no | yes | no | yes | yes | no | yes |
horseshoe_regression |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
irt_2pl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
kumaraswamy_bounded_outcome |
no | no | yes | yes | yes | yes | yes | yes | yes | yes | yes |
lda |
yes | yes | yes | no | yes | yes | yes | yes | yes | yes | yes |
linear_gaussian_ssm |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
lkj_cholesky_correlation |
no | no | yes | yes | no | yes | yes | yes | yes | yes | yes |
logistic_noise_regression |
yes | no | yes | yes | yes | yes | yes | yes | yes | yes | yes |
lstm_lm |
no | no | no | no | no | no | no | no | no | no | no |
mixture_model |
no | no | yes | yes | yes | yes | yes | yes | yes | yes | yes |
montague_nli |
no | yes | yes | yes | no | yes | yes | yes | no | yes | yes |
multimodal_tlg |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
negbin_regression |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
parametric_pooling |
no | no | no | no | no | no | no | no | no | no | no |
pcfg |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
pmcfg |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
pmf |
no | no | no | no | no | no | no | no | no | no | no |
ppca |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
quantifier_scope |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
schema_chart_parser |
no | no | no | no | no | no | no | no | no | no | no |
seq2seq |
no | no | no | no | no | no | no | no | no | no | no |
stochastic_volatility |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
survival_weibull |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
tensor_contraction |
no | no | no | no | no | no | no | no | no | no | no |
term_autoencoder |
no | no | no | no | no | no | no | no | no | no | no |
transformer_lm |
no | no | no | no | no | no | no | no | no | no | no |
tree_categorical |
yes | no | yes | yes | yes | yes | yes | yes | yes | yes | yes |
type_logical |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
vae |
no | no | no | no | no | no | no | no | no | no | no |
vanilla_rnn_lm |
no | no | no | no | no | no | no | no | no | no | no |
zip_regression |
no | no | yes | no | yes | yes | yes | yes | yes | yes | yes |
1.2 Constructs¶
One minimal program per surface construct, so a no here isolates the construct rather than the model that used it.
1.2.1 Declarations¶
| Program | bugs | church | edward2 | gen | jags | numpyro | pymc | pyro | stan | turing | webppl |
|---|---|---|---|---|---|---|---|---|---|---|---|
statements/bundle_decl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/category_decl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/composition_decl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/contraction_decl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/decoder_decl |
no | no | no | no | no | yes | no | yes | no | no | no |
statements/deduction_decl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/encoder_decl |
no | no | no | no | no | yes | no | yes | no | no | no |
statements/export_decl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/let_decl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/loss_decl |
no | no | no | no | no | no | no | no | no | no | no |
statements/morphism_decl_init_family |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/object_decl_finset |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/object_decl_real |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/program_decl_scalar |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/rule_decl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/schema_decl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
statements/signature_decl |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
1.2.2 Program steps¶
| Program | bugs | church | edward2 | gen | jags | numpyro | pymc | pyro | stan | turing | webppl |
|---|---|---|---|---|---|---|---|---|---|---|---|
steps/let_step |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
steps/marginalize_step |
yes | yes | yes | no | yes | yes | yes | yes | yes | yes | yes |
steps/observe_step |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
steps/return_step |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
steps/sample_step |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
steps/score_step |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
1.2.3 Let-expressions¶
| Program | bugs | church | edward2 | gen | jags | numpyro | pymc | pyro | stan | turing | webppl |
|---|---|---|---|---|---|---|---|---|---|---|---|
let_expressions/let_expr_binop |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
let_expressions/let_expr_call |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
let_expressions/let_expr_factor |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
let_expressions/let_expr_index |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
let_expressions/let_expr_lambda |
no | yes | yes | yes | no | yes | yes | yes | no | yes | yes |
let_expressions/let_expr_list |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
let_expressions/let_expr_literal |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
let_expressions/let_expr_method_call |
no | yes | yes | yes | no | yes | yes | yes | no | yes | yes |
let_expressions/let_expr_string |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
let_expressions/let_expr_unary |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
let_expressions/let_expr_var |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
1.2.4 Option values¶
| Program | bugs | church | edward2 | gen | jags | numpyro | pymc | pyro | stan | turing | webppl |
|---|---|---|---|---|---|---|---|---|---|---|---|
options/option_call |
no | no | no | no | no | no | no | no | no | no | no |
options/option_flag |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
options/option_list |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
options/option_name |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
options/option_number |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
options/option_string |
no | no | no | no | no | no | no | no | no | no | no |
1.2.5 Axis specifications¶
| Program | bugs | church | edward2 | gen | jags | numpyro | pymc | pyro | stan | turing | webppl |
|---|---|---|---|---|---|---|---|---|---|---|---|
axes/gp_event_axis |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
axes/matrix_kronecker |
no | yes | yes | yes | no | yes | yes | yes | yes | yes | yes |
axes/scalar_iid_plate |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
axes/scalar_implicit |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
axes/vector_event_axis |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
axes/vector_over_iid |
yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
2. What no backend supports¶
Each construct below is refused by all 11 backends, so it marks the boundary of what QVR exports at all rather than a gap in one target. Reaching a target means writing the model differently, not switching language.
bundle_decl, schema_decl¶
Refused for: schema_chart_parser.
Reported kinds:
bundle_decl
schema_decl
Each backend words it differently; this is bugs's. bugs on schema_chart_parser reports:
bugs cannot transpile this program:
- the module's `bundle_decl` declaration binds a name to a tuple of `schema` references, so a parser or a chart fold can splice the whole set in at once. It is a compile-time set of grammar rules. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for a first-class, nameable set of grammar rules. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. A rule bundle has no counterpart to emit. Parse in quivers and transpile a `program` over the resulting chart weights, or pass the parse in as observed data.
- the module's `schema_decl` declaration declares a morphism schema: a family of morphisms quantified over type parameters, instantiated at concrete objects wherever it is used. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for a declaration quantified over type parameters: its variables and distributions are all at concrete shapes. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Instantiate the schema at the concrete objects you want and write the result as a `morphism` or a `program` step, which does have a target form.
composition_decl¶
Refused for: pmf.
Reported kinds:
composition_decl
Each backend words it differently; this is bugs's. bugs on pmf reports:
the module's `composition_decl` declaration declares a composition rule: the algebra (its `tensor_op`, `join`, `unit` and `zero`) that says how morphism scores combine when morphisms are composed. It is structure over the whole module, not a random variable and not a step. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for declaring the algebra a category composes in. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. A composition rule has no counterpart to emit. Add a `program ... :` block to the module and the rule is carried as module metadata while that program is transpiled; to run the rule itself, evaluate the module in quivers, which is where composition rules have meaning.
composition_decl, contraction_decl¶
Refused for: tensor_contraction.
Reported kinds:
composition_decl
contraction_decl
Each backend words it differently; this is bugs's. bugs on tensor_contraction reports:
bugs cannot transpile this program:
- the module's `composition_decl` declaration declares a composition rule: the algebra (its `tensor_op`, `join`, `unit` and `zero`) that says how morphism scores combine when morphisms are composed. It is structure over the whole module, not a random variable and not a step. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for declaring the algebra a category composes in. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. A composition rule has no counterpart to emit. Add a `program ... :` block to the module and the rule is carried as module metadata while that program is transpiled; to run the rule itself, evaluate the module in quivers, which is where composition rules have meaning.
- the module's `contraction_decl` declaration declares a contraction: a morphism built by folding several input morphisms together over their shared axes, with the product and sum of the fold taken from the `rule=` composition rule it names. Its meaning lives entirely in that algebra. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for a morphism defined by contracting other morphisms over an algebra's fold. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. A contraction has no counterpart to emit. Write the quantities you want scored as explicit `sample` / `observe` steps of a `program ... :` block, or evaluate the contraction in quivers and pass its result in as data.
family:school_effects¶
Refused for: parametric_pooling.
Reported kinds:
family:school_effects
Every backend reports it in the same words. bugs on parametric_pooling reports:
no transpile target can transpile this program:
- no transpile target has `school_effects` distribution: the family registry contains no matching target distribution. Pick a family this target supports, or write the density you want as an explicit `score` step.
- no transpile target can transpile this program. The refusal is tagged `sample / observe step references 'school_effects' which is neither a family in the registry, a declared morphism, nor a let-bound name`, which has no explanation registered yet; please report it.
loss_decl¶
Refused for: options/option_call, options/option_string, statements/loss_decl.
Reported kinds:
loss_decl
Each backend words it differently; this is bugs's. bugs on options/option_call reports:
the module's `loss_decl` declaration declares a training objective attached to a program, a deduction, an encoder or a decoder. A loss is something an optimiser minimises, not a term of the model's density. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for an optimisation objective separate from the joint it scores. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. If the term belongs in the density, write it as a `score` step inside the program; if it is an optimiser objective, keep it in quivers, which is where training happens.
loss_decl, signature_decl¶
Refused for: term_autoencoder.
Reported kinds:
loss_decl
signature_decl
Each backend words it differently; this is bugs's. bugs on term_autoencoder reports:
bugs cannot transpile this program:
- the module's `decoder_decl` declaration declares a neural decoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `loss_decl` declaration declares a training objective attached to a program, a deduction, an encoder or a decoder. A loss is something an optimiser minimises, not a term of the model's density. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for an optimisation objective separate from the joint it scores. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. If the term belongs in the density, write it as a `score` step inside the program; if it is an optimiser objective, keep it in quivers, which is where training happens.
- the module's `signature_decl` declaration declares a term signature: the sorts, constructors and binders of an algebraic term language. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for an algebraic term signature: sorts and constructors are not things its model block can declare. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. A term signature has no counterpart to emit. Encode the terms you need as indices into a declared finite object and score those with an ordinary family.
param-source:mlp¶
Refused for: bnn, deep_markov, seq2seq, transformer_lm, vae.
Reported kinds:
param-source:mlp
Every backend reports it in the same words. bugs on bnn reports:
no transpile target can transpile this program:
- no transpile target can transpile this program. The refusal is tagged `morphism 'net' draws its parameters from a 'mlp' network. The network's weights are model-internal and appear in neither the wire form nor the sample sites, so no backend can reconstruct the mean the morphism computes at line 33. Express the network as explicit sampled weights and a deterministic forward pass, or write the step as a `sample` / `observe` against a closed-form family.`, which has no explanation registered yet; please report it.
- a morphism draws its parameters from a `mlp` network, whose weights are not sites the program declares, so no target can reconstruct the parameter it computes. Express the network as explicit sampled weights and a deterministic forward pass, or write the step as a `sample` / `observe` against a closed-form family.
scan:no-lowering:fwd_cell¶
Refused for: bidirectional_rnn_lm.
Reported kinds:
scan:no-lowering:fwd_cell
Every backend reports it in the same words. bugs on bidirectional_rnn_lm reports:
`scan(fwd_cell)` threads `fwd_cell` across the positions of a sequence, so it denotes one draw per position over intermediate states the program never names. Writing that out needs a loop whose bound is the sequence length and one sample site per position, and the sequence axis is not an object this module declares: it arrives with the data, so there is no extent to size the loop from and no name to bind the per-position states to. Write the recurrence as a program over a declared axis, giving each position its own `sample` step, or unroll the chain into one `sample` per step.
scan:no-lowering:gru_cell¶
Refused for: gru_lm.
Reported kinds:
scan:no-lowering:gru_cell
Every backend reports it in the same words. bugs on gru_lm reports:
`scan(gru_cell)` threads `gru_cell` across the positions of a sequence, so it denotes one draw per position over intermediate states the program never names. Writing that out needs a loop whose bound is the sequence length and one sample site per position, and the sequence axis is not an object this module declares: it arrives with the data, so there is no extent to size the loop from and no name to bind the per-position states to. Write the recurrence as a program over a declared axis, giving each position its own `sample` step, or unroll the chain into one `sample` per step.
scan:no-lowering:lstm_cell¶
Refused for: lstm_lm.
Reported kinds:
scan:no-lowering:lstm_cell
Every backend reports it in the same words. bugs on lstm_lm reports:
`scan(lstm_cell)` threads `lstm_cell` across the positions of a sequence, so it denotes one draw per position over intermediate states the program never names. Writing that out needs a loop whose bound is the sequence length and one sample site per position, and the sequence axis is not an object this module declares: it arrives with the data, so there is no extent to size the loop from and no name to bind the per-position states to. Write the recurrence as a program over a declared axis, giving each position its own `sample` step, or unroll the chain into one `sample` per step.
scan:no-lowering:rnn_cell¶
Refused for: vanilla_rnn_lm.
Reported kinds:
scan:no-lowering:rnn_cell
Every backend reports it in the same words. bugs on vanilla_rnn_lm reports:
`scan(rnn_cell)` threads `rnn_cell` across the positions of a sequence, so it denotes one draw per position over intermediate states the program never names. Writing that out needs a loop whose bound is the sequence length and one sample site per position, and the sequence axis is not an object this module declares: it arrives with the data, so there is no extent to size the loop from and no name to bind the per-position states to. Write the recurrence as a program over a declared axis, giving each position its own `sample` step, or unroll the chain into one `sample` per step.
3. What each backend alone refuses¶
These are target gaps rather than language gaps: another backend renders the same program. Each quoted message is the one that backend raises, including whatever alternative it offers.
bugs¶
Every program below renders on at least one other backend and is refused here.
decoder_decl, encoder_decl
Refused for: statements/decoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
decoder_decl
encoder_decl
bugs on statements/decoder_decl reports:
bugs cannot transpile this program:
- the module's `decoder_decl` declaration declares a neural decoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
encoder_decl
Refused for: statements/encoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
encoder_decl
bugs on statements/encoder_decl reports:
the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; BUGS has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
family:BetaBinomial:no-bugs-distribution
Refused for: beta_binomial_ab_test.
Renders on: edward2, gen, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:BetaBinomial:no-bugs-distribution: the BUGS distribution catalogue has no beta-binomial, and the zeros trick that would write its closed-form marginal into the joint needs a data-bound carrier the BUGS language cannot declare (it has no `data { ... }` block)
bugs on beta_binomial_ab_test reports:
bugs cannot score a draw from `BetaBinomial`: the BUGS distribution catalogue has no beta-binomial, and the zeros trick that would write its closed-form marginal into the joint needs a data-bound carrier the BUGS language cannot declare (it has no `data { ... }` block)
family:ContinuousBernoulli:no-free-density-term
Refused for: zip_regression.
Renders on: edward2, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:ContinuousBernoulli:no-free-density-term: the density is elementary in `log` and `abs`, but adding a written-out density to the joint needs a free log-density term the language has no statement for
bugs on zip_regression reports:
bugs cannot score a draw from `ContinuousBernoulli`: the density is elementary in `log` and `abs`, but adding a written-out density to the joint needs a free log-density term the language has no statement for
family:Kumaraswamy:no-free-density-term
Refused for: kumaraswamy_bounded_outcome.
Renders on: edward2, gen, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:Kumaraswamy:no-free-density-term: the density is elementary in `log` and `pow`, but adding a written-out density to the joint needs a free log-density term the language has no statement for
bugs on kumaraswamy_bounded_outcome reports:
bugs cannot score a draw from `Kumaraswamy`: the density is elementary in `log` and `pow`, but adding a written-out density to the joint needs a free log-density term the language has no statement for
family:LKJCholesky
Refused for: lkj_cholesky_correlation.
Renders on: edward2, gen, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:LKJCholesky: no BUGS target name
bugs on lkj_cholesky_correlation reports:
bugs cannot score a draw from `LKJCholesky`: no BUGS target name
family:MatrixNormal
Refused for: axes/matrix_kronecker.
Renders on: church, edward2, gen, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:MatrixNormal: no BUGS target name
bugs on axes/matrix_kronecker reports:
bugs cannot score a draw from `MatrixNormal`: no BUGS target name
family:MixtureNormal:no-free-density-term
Refused for: mixture_model.
Renders on: edward2, gen, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:MixtureNormal:no-free-density-term: a finite mixture is an explicit weighted density in the BUGS function library, but adding one to the joint needs a free log-density term the language has no statement for
bugs on mixture_model reports:
bugs cannot score a draw from `MixtureNormal`: a finite mixture is an explicit weighted density in the BUGS function library, but adding one to the joint needs a free log-density term the language has no statement for
let-expr:LetExprLambda:bugs
Refused for: let_expressions/let_expr_lambda.
Renders on: church, edward2, gen, numpyro, pymc, pyro, turing, webppl.
Reported kinds:
let-expr:LetExprLambda:bugs: BUGS / JAGS have no anonymous function syntax
bugs on let_expressions/let_expr_lambda reports:
bugs-helper has no anonymous-function syntax in a model-body expression, so a `param -> body` lambda in a `let` has no form to take. Inline the lambda's body at its use site.: BUGS / JAGS have no anonymous function syntax
let-expr:LetExprMethodCall:bugs
Refused for: let_expressions/let_expr_method_call, montague_nli.
Renders on: church, edward2, gen, numpyro, pymc, pyro, turing, webppl.
Reported kinds:
let-expr:LetExprMethodCall:bugs: BUGS / JAGS have no method-dispatch syntax; the chart-parser deduction graft that would supply the called function is also impossible because BUGS forbids user-defined model-body functions and JAGS exposes them only through compiled C++ modules linked at startup, not inline
bugs on let_expressions/let_expr_method_call reports:
bugs-helper has no method-dispatch syntax, so a `receiver.method(...)` call in a `let` has no form to take. Rewrite the call as a plain function of its arguments, or compute it in quivers and pass the result in as data.: BUGS / JAGS have no method-dispatch syntax; the chart-parser deduction graft that would supply the called function is also impossible because BUGS forbids user-defined model-body functions and JAGS exposes them only through compiled C++ modules linked at startup, not inline
marginalize:ungrouped-over-plate:state
Refused for: hmm.
Renders on: numpyro, pyro, stan, webppl.
Reported kinds:
marginalize:ungrouped-over-plate:state
bugs on hmm reports:
`marginalize state` carries no index and no `over =` clause, so it declares one latent and every row of the plated `observe` inside it is conditioned on that single draw. Its density thus accumulates the body's rows and reduces over the latent once, and BUGS scores the rows the other way round, giving each its own draw. That is a different measure, not a different base measure, so it is refused rather than emitted. Give the latent the plate its rows share (`marginalize state : A`) or a grouping `over =` clause, either of which this target does emit correctly.
church¶
Every program below renders on at least one other backend and is refused here.
decoder_decl, encoder_decl
Refused for: statements/decoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
decoder_decl
encoder_decl
church on statements/decoder_decl reports:
church cannot transpile this program:
- the module's `decoder_decl` declaration declares a neural decoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Church has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Church has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
encoder_decl
Refused for: statements/encoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
encoder_decl
church on statements/encoder_decl reports:
the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Church has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
family:BetaBinomial:no-church-target
Refused for: beta_binomial_ab_test.
Renders on: edward2, gen, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:BetaBinomial:no-church-target
church on beta_binomial_ab_test reports:
church has no `BetaBinomial` distribution. Pick a family this target supports, or write the density you want as an explicit `score` step.
family:ContinuousBernoulli:no-church-target
Refused for: zip_regression.
Renders on: edward2, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:ContinuousBernoulli:no-church-target
church on zip_regression reports:
church has no `ContinuousBernoulli` distribution. Pick a family this target supports, or write the density you want as an explicit `score` step.
family:HalfStudentT:no-church-target
Refused for: half_student_t_hierarchical.
Renders on: bugs, edward2, gen, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:HalfStudentT:no-church-target
church on half_student_t_hierarchical reports:
church has no `HalfStudentT` distribution. Pick a family this target supports, or write the density you want as an explicit `score` step.
family:Kumaraswamy:no-church-target
Refused for: kumaraswamy_bounded_outcome.
Renders on: edward2, gen, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:Kumaraswamy:no-church-target
church on kumaraswamy_bounded_outcome reports:
church has no `Kumaraswamy` distribution. Pick a family this target supports, or write the density you want as an explicit `score` step.
family:LKJCholesky:no-church-target
Refused for: lkj_cholesky_correlation.
Renders on: edward2, gen, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:LKJCholesky:no-church-target
church on lkj_cholesky_correlation reports:
church has no `LKJCholesky` distribution. Pick a family this target supports, or write the density you want as an explicit `score` step.
family:Logistic:no-church-target
Refused for: logistic_noise_regression.
Renders on: bugs, edward2, gen, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:Logistic:no-church-target
church on logistic_noise_regression reports:
church has no `Logistic` distribution. Pick a family this target supports, or write the density you want as an explicit `score` step.
family:MixtureNormal:no-church-target
Refused for: mixture_model.
Renders on: edward2, gen, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:MixtureNormal:no-church-target
church on mixture_model reports:
church has no `MixtureNormal` distribution. Pick a family this target supports, or write the density you want as an explicit `score` step.
let-expr:LetExprFactor:multi-axis-body
Refused for: tree_categorical.
Renders on: bugs, edward2, gen, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
let-expr:LetExprFactor:multi-axis-body
church on tree_categorical reports:
a `factor` whose body ranges over more than one axis has no scheme-helper expression form: the product would have to be built by nested loops over a named array, and a `let` lowered to one expression has nowhere to put it. Split the factor into one per axis, or move the product into a plated `score` step.
marginalize:ungrouped-over-plate:state
Refused for: hmm.
Renders on: numpyro, pyro, stan, webppl.
Reported kinds:
marginalize:ungrouped-over-plate:state
church on hmm reports:
`marginalize state` carries no index and no `over =` clause, so it declares one latent and every row of the plated `observe` inside it is conditioned on that single draw. Its density thus accumulates the body's rows and reduces over the latent once, and Church scores the rows the other way round, giving each its own draw. That is a different measure, not a different base measure, so it is refused rather than emitted. Give the latent the plate its rows share (`marginalize state : A`) or a grouping `over =` clause, either of which this target does emit correctly.
edward2¶
Every program below renders on at least one other backend and is refused here.
decoder_decl, encoder_decl
Refused for: statements/decoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
decoder_decl
encoder_decl
edward2 on statements/decoder_decl reports:
edward2 cannot transpile this program:
- the module's `decoder_decl` declaration declares a neural decoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Edward2 has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Edward2 has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
encoder_decl
Refused for: statements/encoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
encoder_decl
edward2 on statements/encoder_decl reports:
the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Edward2 has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
marginalize:ungrouped-over-plate:state
Refused for: hmm.
Renders on: numpyro, pyro, stan, webppl.
Reported kinds:
marginalize:ungrouped-over-plate:state
edward2 on hmm reports:
`marginalize state` carries no index and no `over =` clause, so it declares one latent and every row of the plated `observe` inside it is conditioned on that single draw. Its density thus accumulates the body's rows and reduces over the latent once, and Edward2 scores the rows the other way round, giving each its own draw. That is a different measure, not a different base measure, so it is refused rather than emitted. Give the latent the plate its rows share (`marginalize state : A`) or a grouping `over =` clause, either of which this target does emit correctly.
gen¶
Every program below renders on at least one other backend and is refused here.
decoder_decl, encoder_decl
Refused for: statements/decoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
decoder_decl
encoder_decl
gen on statements/decoder_decl reports:
gen cannot transpile this program:
- the module's `decoder_decl` declaration declares a neural decoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Gen.jl has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Gen.jl has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
encoder_decl
Refused for: statements/encoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
encoder_decl
gen on statements/encoder_decl reports:
the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Gen.jl has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
marginalize:no-log-weight:cls
Refused for: steps/marginalize_step.
Renders on: bugs, church, edward2, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
marginalize:no-log-weight:cls
gen on steps/marginalize_step reports:
`marginalize cls` denotes the integral of the block's measure over the latent, and Gen.jl has no way to add a free log-density term to a trace: every address it scores must be one it drew. Emitting the draw instead would denote a measure on the product of the latent's support with the block's, which is a larger space than the program's and differs from it by an amount that moves with the data. Draw the latent explicitly with `sample` if that is the model you want, or score the block on a target that carries a log-weight primitive.
marginalize:no-log-weight:state
Refused for: hmm.
Renders on: numpyro, pyro, stan, webppl.
Reported kinds:
marginalize:no-log-weight:state
gen on hmm reports:
`marginalize state` denotes the integral of the block's measure over the latent, and Gen.jl has no way to add a free log-density term to a trace: every address it scores must be one it drew. Emitting the draw instead would denote a measure on the product of the latent's support with the block's, which is a larger space than the program's and differs from it by an amount that moves with the data. Draw the latent explicitly with `sample` if that is the model you want, or score the block on a target that carries a log-weight primitive.
marginalize:no-log-weight:z
Refused for: lda, zip_regression.
Renders on: edward2, jags, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
marginalize:no-log-weight:z
gen on lda reports:
`marginalize z` denotes the integral of the block's measure over the latent, and Gen.jl has no way to add a free log-density term to a trace: every address it scores must be one it drew. Emitting the draw instead would denote a measure on the product of the latent's support with the block's, which is a larger space than the program's and differs from it by an amount that moves with the data. Draw the latent explicitly with `sample` if that is the model you want, or score the block on a target that carries a log-weight primitive.
jags¶
Every program below renders on at least one other backend and is refused here.
decoder_decl, encoder_decl
Refused for: statements/decoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
decoder_decl
encoder_decl
jags on statements/decoder_decl reports:
jags cannot transpile this program:
- the module's `decoder_decl` declaration declares a neural decoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; JAGS has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; JAGS has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
encoder_decl
Refused for: statements/encoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
encoder_decl
jags on statements/encoder_decl reports:
the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; JAGS has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
family:no-target-name:LKJCholesky
Refused for: lkj_cholesky_correlation.
Renders on: edward2, gen, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:no-target-name:LKJCholesky
jags on lkj_cholesky_correlation reports:
jags has no `LKJCholesky` distribution. Pick a family this target supports, or write the density you want as an explicit `score` step.
family:no-target-name:MatrixNormal
Refused for: axes/matrix_kronecker.
Renders on: church, edward2, gen, numpyro, pymc, pyro, stan, turing, webppl.
Reported kinds:
family:no-target-name:MatrixNormal
jags on axes/matrix_kronecker reports:
jags has no `MatrixNormal` distribution. Pick a family this target supports, or write the density you want as an explicit `score` step.
let-expr:LetExprLambda:jags
Refused for: let_expressions/let_expr_lambda.
Renders on: church, edward2, gen, numpyro, pymc, pyro, turing, webppl.
Reported kinds:
let-expr:LetExprLambda:jags: BUGS / JAGS have no anonymous function syntax
jags on let_expressions/let_expr_lambda reports:
jags-helper has no anonymous-function syntax in a model-body expression, so a `param -> body` lambda in a `let` has no form to take. Inline the lambda's body at its use site.: BUGS / JAGS have no anonymous function syntax
let-expr:LetExprMethodCall:jags
Refused for: let_expressions/let_expr_method_call, montague_nli.
Renders on: church, edward2, gen, numpyro, pymc, pyro, turing, webppl.
Reported kinds:
let-expr:LetExprMethodCall:jags: BUGS / JAGS have no method-dispatch syntax; the chart-parser deduction graft that would supply the called function is also impossible because BUGS forbids user-defined model-body functions and JAGS exposes them only through compiled C++ modules linked at startup, not inline
jags on let_expressions/let_expr_method_call reports:
jags-helper has no method-dispatch syntax, so a `receiver.method(...)` call in a `let` has no form to take. Rewrite the call as a plain function of its arguments, or compute it in quivers and pass the result in as data.: BUGS / JAGS have no method-dispatch syntax; the chart-parser deduction graft that would supply the called function is also impossible because BUGS forbids user-defined model-body functions and JAGS exposes them only through compiled C++ modules linked at startup, not inline
marginalize:ungrouped-over-plate:state
Refused for: hmm.
Renders on: numpyro, pyro, stan, webppl.
Reported kinds:
marginalize:ungrouped-over-plate:state
jags on hmm reports:
`marginalize state` carries no index and no `over =` clause, so it declares one latent and every row of the plated `observe` inside it is conditioned on that single draw. Its density thus accumulates the body's rows and reduces over the latent once, and JAGS scores the rows the other way round, giving each its own draw. That is a different measure, not a different base measure, so it is refused rather than emitted. Give the latent the plate its rows share (`marginalize state : A`) or a grouping `over =` clause, either of which this target does emit correctly.
numpyro¶
numpyro renders every program any other backend renders. Its remaining refusals are the language-level gaps of section 2.
pymc¶
Every program below renders on at least one other backend and is refused here.
decoder_decl, encoder_decl
Refused for: statements/decoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
decoder_decl
encoder_decl
pymc on statements/decoder_decl reports:
pymc cannot transpile this program:
- the module's `decoder_decl` declaration declares a neural decoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; PyMC has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; PyMC has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
encoder_decl
Refused for: statements/encoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
encoder_decl
pymc on statements/encoder_decl reports:
the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; PyMC has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
marginalize:ungrouped-over-plate:state
Refused for: hmm.
Renders on: numpyro, pyro, stan, webppl.
Reported kinds:
marginalize:ungrouped-over-plate:state
pymc on hmm reports:
`marginalize state` carries no index and no `over =` clause, so it declares one latent and every row of the plated `observe` inside it is conditioned on that single draw. Its density thus accumulates the body's rows and reduces over the latent once, and PyMC scores the rows the other way round, giving each its own draw. That is a different measure, not a different base measure, so it is refused rather than emitted. Give the latent the plate its rows share (`marginalize state : A`) or a grouping `over =` clause, either of which this target does emit correctly.
pyro¶
pyro renders every program any other backend renders. Its remaining refusals are the language-level gaps of section 2.
stan¶
Every program below renders on at least one other backend and is refused here.
decoder_decl, encoder_decl
Refused for: statements/decoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
decoder_decl
encoder_decl
stan on statements/decoder_decl reports:
stan cannot transpile this program:
- the module's `decoder_decl` declaration declares a neural decoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Stan has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Stan has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
encoder_decl
Refused for: statements/encoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
encoder_decl
stan on statements/encoder_decl reports:
the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Stan has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
let-expr:LetExprLambda
Refused for: let_expressions/let_expr_lambda.
Renders on: church, edward2, gen, numpyro, pymc, pyro, turing, webppl.
Reported kinds:
let-expr:LetExprLambda: Stan has no anonymous function syntax in user-program expression position
stan on let_expressions/let_expr_lambda reports:
stan-helper has no anonymous-function syntax in a model-body expression, so a `param -> body` lambda in a `let` has no form to take. Inline the lambda's body at its use site.: Stan has no anonymous function syntax in user-program expression position
let-expr:LetExprMethodCall:stan
Refused for: let_expressions/let_expr_method_call, montague_nli.
Renders on: church, edward2, gen, numpyro, pymc, pyro, turing, webppl.
Reported kinds:
let-expr:LetExprMethodCall:stan: Stan has no method dispatch syntax; the chart-parser deduction graft that would supply the called function as a Stan `functions { ... }` block requires (a) plumbing `DeductionDecl` through the IR (currently dropped by `CATEGORICAL_METADATA_IGNORABLE`), and (b) a token-sequence input shape (the fixture's `sentence : Real` is a scalar)
stan on let_expressions/let_expr_method_call reports:
stan-helper has no method-dispatch syntax, so a `receiver.method(...)` call in a `let` has no form to take. Rewrite the call as a plain function of its arguments, or compute it in quivers and pass the result in as data.: Stan has no method dispatch syntax; the chart-parser deduction graft that would supply the called function as a Stan `functions { ... }` block requires (a) plumbing `DeductionDecl` through the IR (currently dropped by `CATEGORICAL_METADATA_IGNORABLE`), and (b) a token-sequence input shape (the fixture's `sentence : Real` is a scalar)
turing¶
Every program below renders on at least one other backend and is refused here.
decoder_decl, encoder_decl
Refused for: statements/decoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
decoder_decl
encoder_decl
turing on statements/decoder_decl reports:
turing cannot transpile this program:
- the module's `decoder_decl` declaration declares a neural decoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Turing.jl has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Turing.jl has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
encoder_decl
Refused for: statements/encoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
encoder_decl
turing on statements/encoder_decl reports:
the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; Turing.jl has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
marginalize:ungrouped-over-plate:state
Refused for: hmm.
Renders on: numpyro, pyro, stan, webppl.
Reported kinds:
marginalize:ungrouped-over-plate:state
turing on hmm reports:
`marginalize state` carries no index and no `over =` clause, so it declares one latent and every row of the plated `observe` inside it is conditioned on that single draw. Its density thus accumulates the body's rows and reduces over the latent once, and Turing.jl scores the rows the other way round, giving each its own draw. That is a different measure, not a different base measure, so it is refused rather than emitted. Give the latent the plate its rows share (`marginalize state : A`) or a grouping `over =` clause, either of which this target does emit correctly.
webppl¶
Every program below renders on at least one other backend and is refused here.
decoder_decl, encoder_decl
Refused for: statements/decoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
decoder_decl
encoder_decl
webppl on statements/decoder_decl reports:
webppl cannot transpile this program:
- the module's `decoder_decl` declaration declares a neural decoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; WebPPL has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
- the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; WebPPL has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.
encoder_decl
Refused for: statements/encoder_decl.
Renders on: numpyro, pyro.
Reported kinds:
encoder_decl
webppl on statements/encoder_decl reports:
the module's `encoder_decl` declaration declares a neural encoder over a `signature`. Its weights are model-internal: they appear in neither the wire form nor the sample sites. A probabilistic-programming target has statements for declaring data and parameters, drawing a variable from a distribution, and adding a term to the log density; WebPPL has none for a network whose weights are not themselves sites. This module also declares no `program`, so there is no probabilistic program here to transpile in its place. Express the network as explicit sampled weights and a deterministic forward pass, so every weight is a site the target can emit.