After skimming through the tutorial at www.crystal-Lang.org, I understand most of the basics but I’m having trouble grasping types. Like everything else they seem to be somewhere between Ruby’s (automatically decided) and C/C++’s (you declare types). Can someone briefly explain how to declare them manually and when it’s necessary to?

# Tag: explicit

## Sending explicit auth fail requests to fail2ban

From what I understand, fail2ban parses the log files for regexps matching like authentication failure. Is there a way an application can explicitly notify auth failure information like via a REST call? This way, if the log format or log file location changes unexpectedly, it doesn’t silently break fail2ban? Are there other tools that can help with this case?

## Explicit examples of Azumaya algebras

I’m trying to understand the Brauer group of a scheme better. I know how to compute $ \text{Br}(X)$ as an abstract group in some cases, but don’t have a good idea of what the individual Azumaya algebras actually look like (in terms of an explicit trivialisation on an etale open cover). For instance:

- What do the Azumaya algebras on $ \mathbb{P}^n_k$ look like? (Since $ \text{Br}(\mathbb{P}^n_k)=\text{Br}(k)$ , I imagine there’s an explicit way to get an Azumaya algbera on $ \mathbb{P}^n$ from a central simple algebra).
- What do the Azumaya algebras on a smooth curve in $ \mathbb{P}^2$ given by $ f=0$ look like? (For some $ k$ not algberaically closed, say $ \mathbb{F}_q$ , since otherwise $ \text{Br}(X)=0$ ).
- Are there any other examples like this?

I’m mainly interested in this to compute examples of the Brauer-Manin obstruction, i.e. taking Azumaya algebra $ A$ and point $ p\in X(k_\nu)$ and computing $ $ \text{inv}_\nu(A_{p})$ $ where $ A_{p}$ is the image of Azumaya algebra $ A$ under $ \text{Br}(X)\to \text{Br}(k_\nu)$ arising from the inclusion of $ p\hookrightarrow X$ , and $ \text{inv}_\nu$ is the Hasse invariants map. I’d be interested in seeing this computed in the examples above.

My confusion might just arise from not knowing how to explicitly compute the map $ \text{inv}_\nu:\text{Br}(k_\nu)\to \mathbb{Q}/\mathbb{Z}$ .

## Making explicit the local structure theorem of étale maps in a very simple case

Making explicit the local structure theorem of étale maps in a very simple case.

First I recall the following items from Stacks.

\smallskip \textbf{Lemma 10.141.2.} Any étale ring map is standard smooth. More precisely, if $ R \to S$ is étale, then there exists a presentation $ S = R[x_1,\dots,x_n]/(f_1,\dots,f_n)$ such that the image of $ \det(\partial f_j/\partial x_i)$ is invertible in $ S$ .

\smallskip Given a prime $ Q$ of S we say that $ R \to S$ is étale at $ Q$ if there exists a $ g \in S$ , $ g \notin Q$ such that $ \varphi:R \to S_g$ is étale.

\smallskip \textbf{Definition 10.141.13.} Let $ R$ be a ring. Let $ g, f \in R[x]$ . Assume that $ f$ is monic and the derivative $ f’$ is invertible in the localization $ R[x]_g/(f)$ . In this case the ring map $ R \to R[x]_g/(f)$ is said to be standard étale.

\smallskip \textbf{Proposition 10.141.16.} Let $ R \to S$ be a ring map. Let $ Q\subset S$ be a prime. If $ R \to S$ is étale at $ Q$ , then there exists a $ h \in S$ , $ h \notin Q$ such that $ R \to S_h$ is standard étale.

One can deduce easily the following theorem, an equivalent form of 10.141.16, with no prime.

\smallskip \textbf{Theorem.} Let $ R \to S$ be an étale ring map. Then there exists a covering $ Spec(S)= \cup_i D(g_i)$ such that each of the ring maps $ R \to S_{g_i}$ is standard étale.

\smallskip My question is to make explicit this theorem for a very simple example of an étale ring map, given as standard smooth in one variable.

I consider a ring $ R$ , a degree 3 polynomial $ f(X)=aX^3+bX^2+cX+d\in R(X)$ . I assume that $ f'(x)$ is invertible in $ S=R[x]=R[X]/(f(X))$ . This means that there exist $ u$ and $ v$ in $ R[X]$ such that $ uf+vf’=1$ in $ R[X]$ . So the natural map $ R\to S$ is an étale ring map (standard smooth). In order to make the theorem explicit, I have to find some elements $ y_1$ , \dots, $ y_n$ and $ g_1$ , \dots, $ g_n$ in $ S$ , such that:

$ \bullet$ $ (g_1, \dots, g_n)=S$ ,

$ \bullet$ $ y_i$ is integral over $ R$ , with $ h_i(y_i)=0$ , $ h_i(Y)$ monic in R[Y], $ R[y_i]\simeq R[Y]/h_i(Y)$

$ \bullet$ $ g_i(x)\in R[y_i]$

$ \bullet$ the map $ R_{g_i}[y_i] \to S_{g_i}$ is an isomorphism

Perhaps a good choice for the $ g_i$ ‘s is $ g_1=a$ , $ g_2=ax+b$ , $ g_3=ax^2+bx+c$ . $ y_1$ should be $ ax$ , but I dont find $ y_2$ and $ y_3$ .

## Explicit description of injective hulls

Let $ k$ be a field, and let $ R:=k[x_1,\ldots,x_n]$ .

Consider the $ R$ -module $ M:=R/{(x_1,\ldots,x_n)}\cong k$ with all the $ x_i$ acting as zero. Then the injective hull of $ M$ can be described explicitly as follows: $ $ I_M := k[x_1^{-1},\ldots,x_n^{-1}]. $ $ Here, a monomial $ \prod x_i^{a_i}\in R$ acts on a basis element $ x_i^{b_i}\in I_M$ by the formula $ $ \textstyle\big(\prod x_i^{a_i}\big)\cdot\big(\prod x_i^{b_i}\big):=\begin{cases} \prod x_i^{a_i+b_i}&\text{if all the $ a_i+b_i$ are $ \le 0$ }\ 0&\text{otherwise} \end{cases} $ $

There exists a more functorial description of $ I_M$ . Let $ R^\wedge:=R_{(x_1,\ldots,x_n)}^\wedge=k[[x_1,\ldots,x_n]]$ be the completion of $ R$ along $ M$ , viewed as a topological ring with its adic topology. Then $ $ I_M = \mathrm{Hom}_{\mathit{cts}}(R^\wedge,k), $ $ where the subscript $ cts$ means continuous homomorphisms. This 2nd description is superior. For example, it makes it obvious that the group of automorphisms of $ R^\wedge$ acts on $ I_M$ .

Question.Let $ R$ be a finitely generated $ k$ -algebra. Let $ \mathfrak p\in \mathrm{Spec}(R)$ be a closed point, and let $ M:=R/\mathfrak p$ . It is true that $ $ I_M := \mathrm{Hom}_{\mathit{cts}}(R_{\mathfrak p}^\wedge,k). $ $ is the injective hull of $ M$ ?

Now let $ \mathfrak p\in \mathrm{Spec}(R)$ be a prime ideal which is not maximal, and let $ M$ bethe field of fractions of $ R/{\mathfrak p}$ , viewed as an $ R$ -module. is there a description of the injective hull of $ M$ along the same lines?

## NDSolve error: Cannot solve to find an explicit formula for the derivatives. Consider using the option Method->{“EquationSimplification”->”Residual”}

I get the above error message when running the following code:

`\[Alpha]h = 0.2; \[Alpha]z = 0.2; \[Gamma] = 0.5; ph = 0.01; pf = \ 0.1; pE = 0.05; FC = 0.1; FE = 0.15; tC = 0.01; tE = 0; TC = 0.05; TE \ = -0.05; w = 1; \[Rho] = 0.2; \[Sigma] = 1/(1 - \[Rho]); L = 1; RA = 0.25; \[Mu] = 1; G = 1; R0 = 0.1; S = 1; v[s_] := \[Mu] Log[ Exp[(\[Alpha]h ((RC[s] + ph)^(-(\[Rho]/\[Sigma])) + (\[Alpha]h/\[Alpha]z)^(-(\ \[Rho]/\[Sigma])))^(( 1 - \[Rho])/\[Rho]) (w + G + R0/L - (pf + tC) s - FC - TC) - \[Gamma] Integrate[ LogisticSigmoid[ x] ((\[Alpha]h/\[Alpha]z)^(-(\[Rho]/\[Sigma])) + (RC[x] + ph)^(-(\[Rho]/\[Sigma])) )/((RC[x] + ph)^-\[Sigma] (w + G + R0/L - (pf + tC) x - FC - TC)), {x, s, S}])/\[Mu]] + Exp[(\[Alpha]h ((RC[s] + ph)^(-(\[Rho]/\[Sigma])) + (\[Alpha]h/\[Alpha]z)^(-(\ \[Rho]/\[Sigma])))^(( 1 - \[Rho])/\[Rho]) (w + G + R0/L - (pE + tE) s - FE - TE) - \[Gamma] Integrate[(1 - LogisticSigmoid[ x]) ((\[Alpha]h/\[Alpha]z)^(-(\[Rho]/\[Sigma])) + (RC[ x] + ph)^(-(\[Rho]/\[Sigma])) )/((RC[x] + ph)^-\[Sigma] (w + G + R0/L - (pf + tC) x - FC - TC)), {x, s, S}])/\[Mu]]]; sol = FullSimplify[Solve[{D[v[s], s] == 0}, RC'[s]]] solprime = Equal @@@ Flatten[sol]; solND = NDSolve[{solprime[[1]], RC[S] == RA}, RC, {s, 0, S}] `

I have tried to add the proposed method and also Method->{“EquationSimplification”->”Solve”} but got other error messages then after quite some time of computation. Either “NDSolve::idelay: Initial history needs to be specified for all variables for delay-differential equations.” or “StringForm::sfr: Item 2 requested in “Delayed time `1`

= `2`

computed at `3`

= `4`

did not evaluate to a real number.” out of range; 1 items available.”

Any advice would be highly appreciated. Thanks!

## Expression simplified for explicit int values, but not with FullSimplify/FunctionExpand and Assuming. What formula does Mathematica use?

I have a $ _4F_3$ hypergeometric function (Mathematica 11.3)

`HypergeometricPFQ[{1, 3/2 + n, 1 + 2 m + n, 1 + 2 m + n}, {2 + n, 2 + n, 3/2 + 2 m + n}, z] `

If I plug in explicit integer values for $ n$ I get e.g.

`In[29]:= HypergeometricPFQ[{1, 3/2 + n, 1 + 2 m + n, 1 + 2 m + n}, {2 + n, 2 + n, 3/2 + 2 m + n}, z] /. {n -> 0} Out[29]= (-1 - 4 m)/( 4 m^2 z) + ((1 + 4 m) HypergeometricPFQ[{1/2, 2 m, 2 m}, {1, 1/2 + 2 m}, z])/(4 m^2 z) In[35]:= HypergeometricPFQ[{1, 3/2 + n, 1 + 2 m + n, 1 + 2 m + n}, {2 + n, 2 + n, 3/2 + 2 m + n}, z] /. {n -> 1} Out[35]= -(((3 + 4 m) (1 + 4 m + 4 m^2 z))/( 3 m^2 (1 + 2 m)^2 z^2)) + ((1 + 4 m) (3 + 4 m) HypergeometricPFQ[{1/ 2, 2 m, 2 m}, {1, 1/2 + 2 m}, z])/(3 m^2 (1 + 2 m)^2 z^2) `

and so on. However, passing $ n$ being an integer as an assumption and using `FullSimplify`

or `FunctionExpand`

leads to nothing

`In[33]:= Assuming[{n \[Element] Integers, n >= 0}, FunctionExpand[ HypergeometricPFQ[{1, 3/2 + n, 1 + 2 m + n, 1 + 2 m + n}, {2 + n, 2 + n, 3/2 + 2 m + n}, z]]] Out[33]= HypergeometricPFQ[{1, 3/2 + n, 1 + 2 m + n, 1 + 2 m + n}, {2 + n, 2 + n, 3/2 + 2 m + n}, z] `

and

`In[36]:= Assuming[{n \[Element] Integers, n >= 0}, FullSimplify[ HypergeometricPFQ[{1, 3/2 + n, 1 + 2 m + n, 1 + 2 m + n}, {2 + n, 2 + n, 3/2 + 2 m + n}, z]]] Out[36]= HypergeometricPFQ[{1, 3/2 + n, 1 + 2 m + n, 1 + 2 m + n}, {2 + n, 2 + n, 3/2 + 2 m + n}, z] `

Ultimately, I want to know what formula does Mathematica use to obtain these simplifications from $ _4F_3$ to $ _3F_2$ (I looked at some resources like DLMF, but couldn’t find anything). Also, it would be nice to find a way to get Mathematica to apply whatever formula it is using to the general case with assumptions.

## View still depends on column even after I have removed the explicit (as well as transitive) dependencies?

Assume I have the following table and view:

`CREATE TABLE my_table (a int, b text, c text); CREATE VIEW my_view AS SELECT * FROM my_table WHERE b = 'foo'; `

The table has some data:

`INSERT INTO my_table VALUES (1, 'foo', 'first'); INSERT INTO my_table VALUES (2, 'foo', 'second'); INSERT INTO my_table VALUES (3, 'foo', 'third'); `

I realise that column `b`

*always* has the same value `'foo'`

. I decide that the entire column is unnecessary, and wish to drop it.

Because I like to be explicit about my dependencies, to make sure I don’t accidentally drop more than I should, I avoid using the `CASCADE`

keyword, opting instead to redefine the dependent view manually:

`CREATE OR REPLACE VIEW my_view AS SELECT * FROM my_table; `

The view now no longer has any explicit dependency on column `b`

, so the column should be safe to delete.

`ALTER TABLE my_table DROP COLUMN b; `

However, as I try to drop column `b`

, I get the following error message

`ERROR: cannot drop table my_table column b because other objects depend on it DETAIL: view my_view depends on table my_table column b HINT: Use DROP ... CASCADE to drop the dependent objects too. `

Why does this error message appear even after removing the dependency on the column to be dropped?

## Why isn’t my function evaluating to an explicit number?

I’m just wondering why my function is not evaluating as I think it should. I put in the following:

`dp = {{0, 71}, {1, 71}, {2, 71}, {3, 70}, {4, 69}, {5, 67}, {6,65}, {7, 63}, {8, 61}, {9, 60}, {10, 60}, {11, 61}, {12, 63}, {13,65}, {14, 66}, {15, 67}, {16, 67}, {16, 67}, {17, 66}, {18,65}, {19, 63}, {20, 60}, {21, 58}, {22, 56}, {23, 55}}; f = Fit[dp, {1, x, x^2, x^3, x^4, x^5, x^6, x^7}, x]; f[3] `

but as output I get

`(71.121 - 1.29633 x + 1.34837 x^2 - 0.504693 x^3 + 0.0700859 x^4 - 0.00447611 x^5 + 0.000134178 x^6 - 1.53469*10^-6 x^7)[3] `

The output I want is the polynomial’s value at x=3.